package com.wanho.java157.service;

import com.github.pagehelper.PageInfo;
import com.wanho.java157.po.BaseEntity;

import java.io.Serializable;
import java.util.List;

public abstract interface BaseService<T extends BaseEntity,E,ID extends Serializable> {
    /**
     * 分页查询
     * @param pageNo 页码
     * @param pageSize 分页跨度
     * @param userExample 查询条件
     * @return 分页对象
     */
    PageInfo<T> selectPage(int pageNo, int pageSize, E userExample) ;

    /**
     * 根据主键删除【物理删除】
     */
    int deleteByPrimaryKey(ID id);

    /**
     * 插入一条记录 【全部列】
     */
    int insert(T record);

    /**
     * 插入一个记录 【部分非空列】
     */
    int insertSelective(T record);

    /**
     * 条件查询 返回多行
     */
    List<T> selectByExample(E example);

    /**
     * 根据主键查询
     */
    T selectByPrimaryKey(ID id);

    /**
     * 修改一条记录 【部分非空列】
     */
    int updateByPrimaryKeySelective(T record);

    /**
     * 修改一条记录 【全部列】
     */
    int updateByPrimaryKey(T record);


    boolean deleteByCustomerId(Integer id);

}

